# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
//int main()
//{
//	int n, i,count = 0,count1=0;
//	int ret[10] = { 0 };
//	scanf_s("%d",&n);
//	int a[10];
//	for (i = 0; i < n; i++)
//	{
//		scanf_s("%d",&a[i]);
//	}
//	for (i = 0; i < n-1; i++)
//	{
//		ret[count]= a[i + 1] - a[i];
//		count++;
//	}
//	for (i = 0; i < count; i++)
//	{
//		count1++;
//		if (count1%3!=0)
//		{
//			printf("%d ",ret[i]);
//		}
//		else
//		{
//			printf("%d\n",ret[i]);
//		}
//	}
//	return 0;
//}
//int main()
//{
//	int count = 0;
//	char a[100];
//	gets(a);
//	int j = 0;
//	char ch;
//	for (j = 0; (ch=a[j])!='\0'; j++)
//	{
//		if (a[j+1] != ' '&&a[j ] == ' ')
//		{
//			count++;
//		}
//		if (a[j] != ' '&&a[j + 1] == '\0')
//		{
//			count++;
//			break;
//		}
//	}
//	printf("%d",count);
//	return 0;
//}
//int main()
//{
//	int n, m, i, k, j;
//	int a[100];
//	int b[100];
//	int c[100];
//	scanf("%d",&n);
//	for (i = 0; i < n; i++)
//	{
//		scanf("%d",&a[i]);
//	}
//	scanf("%d", &m);
//	for (i = 0; i < m; i++)
//	{
//		scanf("%d", &b[i]);
//	}
//	int count = 0;
//	for (i = 0; i < n; i++)
//	{
//		for (j = 0; j < m; j++)
//		{
//			if (a[i] == b[j])
//			{
//				break;
//			}
//		}
//		if (j >= m)
//		{
//			for (k = 0; k < count; k++)
//			{
//				if (c[k] == a[i])
//					break;
//			}
//			if (k >= count)
//			{
//				c[count] = a[i];
//							count++;
//			}
//		}
//	}
//	for (i = 0; i < m; i++)
//	{
//		for (j = 0; j < n; j++)
//		{
//			if (b[i] == a[j])
//			{
//				break;
//			}
//		}
//		if (j >= n)
//		{
//			for (k = 0; k < count; k++)
//			{
//				if (c[k] == b[i])
//					break;
//			}
//			if (k >= count)
//			{
//				c[count] = b[i];
//				count++;
//			}
//
//		}
//	}
//	for (i = 0; i < count - 1; i++)
//	{
//		printf("%d ",c[i]);
//	}
//	printf("%d",c[i]);
//	return 0;
//}
//int main()
//{
//	int n, m,i,j;
//	scanf("%d %d",&n,&m);
//	int a[100];
//	for (i = 0; i < n; i++)
//	{
//		scanf("%d",&a[i]);
//	}
//	for (j = 0; j <m; j++)
//	{
//		for (i = 0; i <n-j; i++)
//		{
//			if (a[i- 1]>a[i])
//			{
//				int tmp = a[i - 1];
//				a[i - 1] = a[i];
//				a[i] = tmp;
//			}
//		}
//	}
//	for (i = 0; i < n-1; i++)
//	{
//		printf("%d ",a[i]);
//	}
//	printf("%d",a[i]);
//	return 0;
//}
//int main()
//{
//	int n;
//	scanf("%d",&n);
//	char ch1[100];
//	char ch2[100];
//	gets(ch1);
//	strcpy(ch2, ch1);
//	for (int i = 0; i < n; i++)
//	{
//		if (strlen(ch1)>strlen(ch2))
//		{
//			strcpy(ch2, ch1);
//		}
//		scanf("%s",ch1);
//	}
//	printf("%s",ch2);
//	return 0;
//}
//int main()
//{
//	char ch[100];
//	gets(ch);
//	for (int i = 0;ch[i]!='#'; i++)
//	{
//		if (ch[i] >= 'A'&&ch[i] <= 'Z')
//		{
//			ch[i] = tolower(ch[i]);
//		}
//		else if (ch[i] >= 'a'&&ch[i] <= 'z')
//		{
//			ch[i] = toupper(ch[i]);
//		}
//		printf("%c",ch[i]);
//	}
//	return 0;
//}
//int main()
//{
//	char ch[100];
//	gets(ch);
//	int i,j;
//	for (i = 0; i < strlen(ch); i++)
//	{
//		for (j = i; j < strlen(ch); j++)
//		{
//			if (ch[i]>ch[j])
//			{
//				int tmp = ch[i];
//				ch[i] = ch[j];
//				ch[j] = tmp;
//			}
//		}
//	}
//	for (i = 0; i < strlen(ch); i++)
//	{
//		if (ch[i] != ch[i + 1])
//		{
//			printf("%c",ch[i]);
//		}
//	}
//	return 0;
//}
//int main()
//{
//	char ch[100];
//	gets(ch);
//	int sum =0;
//	for (int i = 0; i < strlen(ch); i++)
//	{
//		if (isdigit(ch[i]))
//		{
//			sum = ch[i] + 10*sum-'0';
//		}
//	}
//	printf("%d",sum);
//	return 0;
//}
//int main()
//{
//	int n, i, c = 0,b;
//	int a[100];
//	scanf("%d", &n);
//	for ( i = 0; i < n; i++)
//	{
//		scanf("%d",&a[i]);
//	}
//	for (i = 0; i < n; i++)
//	{
//		int count = 0;
//		for (int j = 0; j < n; j++)
//		{
//			if (a[i] == a[j])
//			{
//				count++;
//			}
//		}
//		if (c< count)
//		{
//			c = count;
//			b = a[i];
//		}
//	}
//	printf("%d %d",b,c);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	int n = 0;
//	int t = 0;
//	int j = 0;
//	int arr[50];
//	scanf("%d", &n);
//	for (i = 0; i<n; i++)
//	{
//		scanf("%d", &arr[i]);
//
//	}
//	for (i = 0; i < n-1; i++)
//	{
//		for (j = 0; j < n-i-1; j++)
//		{
//			if (arr[j] <arr[j + 1])
//			{
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//	}
//	for (j = 0; j<n - 1; j++)
//	{
//		printf("%d ", arr[j]);
//	}
//	printf("%d", arr[j]);
//	return 0;
//}
//int gcd(int x, int y)
//{
//	int m = 0;
//	if (x > y)
//	{
//		int tmp = x;
//		x = y;
//		y = tmp;
//	}
//	for (int i = 1; i <=x; i++)
//	{
//		if (x%i == 0 && y%i == 0)
//		{
//			if (i > m)
//			{
//				m = i;
//			}
//		}
//	}
//	return m;
//}
//int main()
//{
//	int x, y;
//	scanf("%d %d", &x, &y);
//	printf("%d\n", gcd(x, y));
//	return 0;
//}
//int prime(int p)
//{
//	if (p = 1 || p <= 0)
//	{
//		return 0;
//	}
//	else
//	{
//		int i = 0;
//		for (i = 2; i <=sqrt(p); i++)
//		{
//			if (p%i == 0)
//			{
//				break;
//			}
//		}
//		if (i > sqrt(p))
//		{
//			return 1;
//		}
//		else
//		{
//			return 0;
//		}
//	}
//}
//int PrimeSum(int m, int n)
//{
//	int i = 0;
//	int sum = 0;
//	if (m == 1 || m <= 0)
//	{
//		m = 2;
//	}
//	for (i = m; i < n; i++)
//	{
//		if (prime(i) == 1)
//		{
//			sum = sum + i;
//		}
//	}
//	return sum;
//}
//int main()
//{
//	int m, n, p;
//
//	scanf("%d %d", &m, &n);
//	printf("Sum of ( ");
//	for (p = m; p <= n; p++) {
//		if (prime(p) != 0)
//			printf("%d ", p);
//	}
//	printf(") = %d\n", PrimeSum(m, n));
//
//	return 0;
//}
//int fact(n)
//{
//	if (n == 1 || n == 0)
//	{
//		return 1;
//	}
//	else
//		return n*fact(n - 1);
//}
//int main()
//{
//	double x = 0.0;
//	int n;
//	float b = 1.0;
//	float c = 1.0;
//	double ret = 0.0;
//	scanf("%lf %d", &x, &n);
//	for (int i = 1; i <= n; i++)
//	{
//		ret = ret + pow(-1, i - 1)*pow(x, 2*i - 1)*(1.0/fact(2*i-1));
//	}
//	printf("%.4lf", ret);
//	return 0;
//}
//int main()
//{
//	char str[100];
//	gets(str);
//	char word[100];
//	gets(word);
//	int count = 0, j = 0;
//	for (int i = 0; i < strlen(str); i++)
//	{
//		while (str[i] == ' ')
//		{
//			i++;
//		}
//		for (int k = i; k < i + strlen(word); k++)
//		{
//			if (str[k] == word[j])
//			{
//				j++;
//				if (j == strlen(word) && str[k + 1] == ' ')
//				{
//					count++;
//				}
//
//			}
//			else
//			{
//				j = 0;
//				break;
//			}
//		}
//	}
//	printf("%d", count);
//}
//struct f
//{
//	float a;
//	float b;
//};
//int main()
//{
//	struct f f1;
//	struct f f2;
//	char ch;
//	scanf("%f %f", &f1.a, &f1.b);
//	getchar();
//	scanf("%c", &ch);
//	getchar();
//	scanf("%f %f", &f2.a, &f2.b);
//	getchar();
//	if (ch == '+')
//	{
//		printf("%.2f+%.2fi", f1.a + f2.a, f1.b + f2.b);
//	}
//	else if (ch == '*')
//	{
//		printf("%.2f%.2fi", f1.a*f2.a - f1.b*f2.b, f1.a*f2.b + f1.b*f2.a);
//	}
//	else if (ch != '+'&&ch != '*')
//	{
//		printf("illegal input");
//	}
//	return 0;
//}
//int main()
//{
//	int n,count=0;
//	scanf("%d",&n);
//	char* p = NULL;
//	p = (char*)malloc(n*sizeof(char));
//	gets(p);
//	char ch;
//	ch = p[0];
//	for (int i = 0; p[i] != '\0'; i++)
//	{
//		if (ch < p[i])
//		{
//			ch = p[i];
//		}
//		if (ch == p[i])
//		{
//			count++;
//		}
//	}
//
//	return 0;
//}
//int main()
//{
//	char ch[100];
//	gets(ch);
//	char word[100];
//	int k = 0;
//	int count = 0;
//	gets(word);
//	for (int i = 0; i < strlen(ch); i++)
//	{
//		while (ch[i] == ' ')
//		{
//			i++;
//		}
//		for (int j = i; j < i + strlen(word); j++)
//		{
//			if (ch[j] == word[k])
//			{
//				k++;
//				if (ch[j + 1] == ' '&&k == strlen(word))
//							{
//								count++;
//							}
//			}
//			
//			else
//			{
//				k = 0;
//				break;
//			}
//		}
//	}
//	printf("%d",count);
//	return 0;
//}
//int main()
//{
//	int n;
//	scanf("%d",&n);
//	getchar();
//	char a[100][101];
//	int len[20][2];
//	for (int i = 0; i < n; i++)
//	{
//		gets(a[i]);
//		len[i][0] = strlen(a[i]);
//		len[i][1] = i;
//	}
//	for (int j = 0; j < n-1; j++)
//	{
//		for (int i = 0; i < n - j - 1; i++)
//		{
//			if (len[i][0]>len[i + 1][0])
//			{
//				int t = len[i][0];
//				len[i][0] = len[i + 1][0];
//				len[i + 1][0] = t;
//
//				int k = len[i][1];
//				len[i][1] = len[i + 1][1];
//				len[i + 1][1] = k;
//			}
//		}
//	}
//	for (int m = 0; m < n; m++)
//	{
//		puts(a[len[m][1]]);
//	}
//	return 0;
//}
//char *match(char *s, char ch1, char ch2)
//{
//	int count = 0;
//	int j, i, k=12,a=11;
//	for (i = 0; i < strlen(s); i++)
//	{
//		if (s[i] == ch1)
//		{
//			count++;
//			if (count == 1)
//			{
//				a = i;
//			}
//		}
//		if (s[i] == ch2)
//		{
//			k = i;
//		}
//	}
//	if (a != 11 && k != 12)
//	{
//		for (i = a; i <= k; i++)
//		{
//			printf("%c",s[i]);
//		}
//		printf("\n");
//	}
//	if (a != 11 && k == 12)
//	{
//		for (i = a; i <= strlen(s) - 1; i++)
//		{
//			printf("%c", s[i]);
//		}
//		printf("\n");
//	}
//	if (a == 11 && k != 12)
//	{
//		printf("\n");
//	}
//	return &s[a];
//}
//int main()
//{
//	char a[10][10];
//	for (int i = 0; i <5; i++)
//	{
//		gets(a[i]);
//	}
//	char* ch=a[0];
//	for (int j = 0; j < 5; j++)
//	{
//		if (strcmp(ch, a[j])<0)
//		{
//			strcpy(ch, a[j]);
//		}
//	}
//	printf("%s",ch);
//	return 0;
//}
//int main()
//{
//	int n;
//	scanf("%d",&n);
//	getchar();
//	char* p = (char*)malloc(n*sizeof(char));
//	gets(p);
//	int sum = 0;
//	for (int i = 0; i < n; i++)
//	{
//		if (p[i] >= 48 && p[i] < 57)
//		{
//			sum += p[i] - 48;
//		}
//	}
//	printf("%d",sum);
//	return 0;
//}
//int main()
//{
//	char ch[100];
//	char word[30];
//	gets(ch);
//	gets(word);
//	int k = 0;
//	int count = 0;
//	int a = strlen(word);
//	for (int i = 0; i < strlen(ch); i++)
//	{
//		if (ch[i] == ' ')
//		{
//			i++;
//		}
//		for (int j = i; j < strlen(word) + i; j++)
//		{
//			if (ch[j] == word[k])
//			{
//				k++;
//				if (k == a&&ch[j + 1] == ' ')
//				{
//					count++;
//				}
//			}
//			else
//			{
//				k = 0;
//				break;
//			}
//		}
//	}
//	printf("%d",count);
//	return 0;
//}
//int main()
//{
//	int n;
//	scanf("%d",&n);
//	getchar();
//	char a[100][101];
//	int len[100][2];
//	int i, j, k;
//	for (i = 0; i < n; i++)
//	{
//		gets(a[i]);
//		len[i][0] = strlen(a[i]);
//		len[i][1] = i;
//	}
//	for (i = 0; i< n-1 ; i++)
//	{
//		for (j = 0; j < n-1 ; j++)
//		{
//			if (len[j][0]>len[j + 1][0])
//			{
//				int tmp = len[j][0];
//				len[j][0] = len[j + 1][0];
//				len[j + 1][0] = tmp;
//
//				tmp= len[j][1];
//				len[j][1] = len[j + 1][1];
//				len[j + 1][1] = tmp;
//			}
//		}
//	}
//	for (i = 0; i < n; i++)
//	{
//		puts(a[len[i][1]]);
//	}
//	return 0;
//}
//int main()
//{
//	int n;
//	int a[100];
//	scanf("%d", &n);
//	for (int i = 0; i<n; i++)
//	{
//		scanf("%d", &a[i]);
//	}
//	for (int j = 0; j <= n - 1; j++)
//	{
//		for (int k = 0; k<n - 1-j; k++)
//		{
//			if (a[k]>a[k + 1])
//			{
//				int tmp = a[k];
//				a[k] = a[k + 1];
//				a[k + 1] = tmp;
//			}
//		}
//	}
//	for (int z = 0; z<n; z++)
//	{
//		printf("%d ", a[z]);
//	}
//	return 0;
//}
//int main()
//{
//	int n, i, j;
//	int a[20];
//	scanf("%d", &n);
//	for (i = 0; i<n; i++)
//	{
//		scanf("%d", &a[i]);
//	}
//	for (i = 0; i<n; i++)
//	{
//		for (j = i; j<n; j++)
//		{
//			if (a[i]>a[j])
//			{
//				int tmp = a[i];
//				a[i] = a[j];
//				a[j] = tmp;
//			}
//		}
//	}
//	for (i = 0; i<n; i++)
//	{
//		printf("%d ", a[i]);
//	}
//	return 0;
//}
//int main()
//{
//	int m, n;
//	int sum = 0;
//	scanf("%d %d", &m, &n);
//	int a[10][10];
//	for (int i = 0; i<m; i++)
//	{
//		for (int j = 0; j<n; j++)
//		{
//			scanf("%d", &a[i][j]);
//		}
//	}
//	for (int i = 0; i<m; i++)
//	{
//		for (int j = 0; j<n; j++)
//		{
//			if (i == 0 || i == m - 1||j == 0 || j == n - 1)
//			{
//				sum += a[i][j];
//			}
//		}
//	}
//	printf("%d", sum);
//	return 0;
//}
int main()
{
	int i;
	double xn = 1.0,sum=0.0,x;
	double a;
	int ret = 1;
	scanf("%lf",&x);
	for (i = 1;; i++)
	{
		ret = ret*i;
		xn = xn*(0.5 - i + 1);
		a = sum;
		sum = sum + (xn*pow(x, i)) * (1.0 / ret);
		if (i -1>0 )
		{
			
			if (abs(sum - a) < 0.000001)
					{
						break;
					}
		}
	}
	sum = sum + 1.0;
	printf("%lf\n",sum);
	return 0;
}